﻿using System;
using Groove.Core.MediaFile;


namespace Groove.Core.Player
{
    public delegate void PlayerPositionChangedDelegate(uint currentPosition);

    public interface IPlayerEngine
    {
        bool Init();

        IMediaFile CurrentMediaFile { get; set; }

        bool PlayOrPause();

        bool Stop();

        bool Mute();

        bool ShutDown();

        PlayerState PlayerState { get; }

        uint PositionMs { get; set; }

        event EventHandler PlayNext;

        event EventHandler StateChanged;

        event PlayerPositionChangedDelegate PositionChanged;

        float Volumn { get; set; }

        bool IsMuted { get; }
    }

    public enum PlayerState
    {     
        Playing,
        Paused,
        Stopped
    }
}
